package controllerInterfaces;

import controller.ControllerBenchmarkPanel;
import controller.ControllerCLI;
import controller.ControllerDBConnectionSetup;
import controller.ControllerLoadTestResult;
import controller.ControllerMain;
import controller.ControllerMetricsPanel;
import controller.ControllerOutputJarSetup;
import controller.ControllerProjectManagement;
import controller.ControllerRecommendersPanel;
import controller.ControllerRunSetup;
import controller.ControllerSaveTestResult;
import controller.ControllerTestPanel;
import controller.ControllerTestResultGraphic;
import controller.ControllerTestSetup;

/**
 *	Create the Controller Layer by according Abstract Factory pattern design
 * 
 */
public class ControllerFactory extends AbstractControllerFactory {

    
    public IControllerMain getControllerMain() {
        return new ControllerMain();
    }
    
    public IControllerMain getControllerMain(String[] args) {
        return new ControllerMain(args);
    }

	@Override
	public IControllerRecommendersPanel getControllerRecommendersPanel() {
		return new ControllerRecommendersPanel();
	}

	@Override
	public IControllerMetricsPanel getControllerMetricsPanel() {
		return new ControllerMetricsPanel();
	}

	@Override
	public IControllerTestsPanel getControllerTestPanel() {
		return new ControllerTestPanel();
	}

	@Override
	public IControllerBenchmarkPanel getControllerBenchmarkPanel() {
		return new ControllerBenchmarkPanel();
	}

	@Override
	public IControllerTestSetup getControllerTestSetup() {
		return new ControllerTestSetup();
	}

	@Override
	public IControllerSaveTestResult getControllerSaveTestResult() {
		return new ControllerSaveTestResult();
	}

	@Override
	public IControllerLoadTestResult getControllerLoadTestResult() {
		return new ControllerLoadTestResult();
	}

	@Override
	public IControllerRunSetup getControllerRun() {
		return new ControllerRunSetup();
	}

	@Override
	public IControllerDBConnectionSetup getControllerDBConnectionSetup() {
		return new ControllerDBConnectionSetup();
	}

	@Override
	public IControllerProjectManagement getControllerProjectManagement() {
		return new ControllerProjectManagement();
	}

	@Override
	public IControllerOutputJarSetup getControllerOutputJar() {
		return new ControllerOutputJarSetup();
	}
	
	@Override
	public IControllerOutputJarSetup getControllerOutputJar(
			boolean createWithView) {
		return new ControllerOutputJarSetup(createWithView);
	}

	@Override
	public IControllerTestResultGraphic getControllerGraphic() {
		return new ControllerTestResultGraphic();
	}

	@Override
	public IControllerCLI getControllerCLI() {
		return new ControllerCLI();
	}

	

}
